home *** CD-ROM | disk | FTP | other *** search
- ;void mouse_steps(vertical_steps,horizontal_steps);
- ; unsigned short *vertical_steps,*horizontal_steps;
-
- EXTRN _memory_model:byte
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:_TEXT
- PUBLIC _mouse_steps
- _mouse_steps proc near
- push bp ;
- mov bp,sp ;
- push di ;
- cmp _memory_model,0 ;near or far?
- jle begin ;jump if near
- inc bp ;else add 2 to BP
- inc bp ;
- begin: mov ax,11 ;function number
- int 33h ;get the value
- cmp _memory_model,2 ;data near or far?
- jb L1 ;jump if near
- les di,dword ptr[bp+4] ;point ES:DI to Horizontal
- mov es:[di],dx ;
- les di,dword ptr[bp+8] ;point ES:DI to Vertical
- mov es:[di],cx ;
- jmp short L2 ;
- L1: mov ax,ds ;NEAR case
- mov es,ax ;
- mov di,[bp+4] ;
- mov es:[di],dx ;
- mov di,[bp+6] ;
- mov es:[di],cx ;
- L2: pop di ;
- pop bp ;
- cmp _memory_model,0 ;quit
- jle quit ;
- db 0CBh ;RET far
- quit: ret ;RET near
- _mouse_steps ENDP
- _TEXT ENDS
- END